// package com.ai.config;
//
//
// import org.springframework.beans.factory.annotation.Value;
// import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
// import org.springframework.context.annotation.Bean;
// import org.springframework.context.annotation.Configuration;
// import org.springframework.data.redis.connection.RedisClusterConfiguration;
// import org.springframework.data.redis.connection.RedisConnectionFactory;
// import org.springframework.data.redis.connection.lettuce.LettuceClientConfiguration;
// import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
// import org.springframework.data.redis.core.RedisTemplate;
// import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
// import org.springframework.data.redis.serializer.StringRedisSerializer;
//
// import java.time.Duration;
// import java.util.List;
//
// /**
//  * @ Tool：IntelliJ IDEA
//  * @Company: asia info
//  * @ Author：mis_wu
//  * @ Date：2025-04-18-17:48
//  * @ Version：1.0
//  * @ Description：
//  */
// @Configuration
// @ConditionalOnProperty(name = "spring.redis.cluster.nodes")
// public class RedisConfig {
//
//     // @Value("${spring.redis.cluster.nodes}")
//     // private List<String> clusterNodes;
//     //
//     // @Value("${spring.redis.password}")
//     // private String password;
//     //
//     //
//     // public RedisConfig(){
//     //     System.out.println("RedisConfig===>" + clusterNodes);
//     // }
//     //
//     // @Bean
//     // public RedisConnectionFactory redisConnectionFactory() {
//     //     RedisClusterConfiguration config = new RedisClusterConfiguration(clusterNodes);
//     //     if (password != null && !password.isEmpty()) {
//     //         config.setPassword(password);
//     //     }
//     //
//     //     LettuceClientConfiguration clientConfig = LettuceClientConfiguration.builder()
//     //             .commandTimeout(Duration.ofMillis(5000))
//     //             .build();
//     //
//     //     return new LettuceConnectionFactory(config, clientConfig);
//     // }
//     //
//     // @Bean
//     // public RedisTemplate<String, Object> redisTemplate() {
//     //     RedisTemplate<String, Object> template = new RedisTemplate<>();
//     //     template.setConnectionFactory(redisConnectionFactory());
//     //     template.setKeySerializer(new StringRedisSerializer());
//     //     template.setValueSerializer(new GenericJackson2JsonRedisSerializer());
//     //     return template;
//     // }
//
//
//     // 读写分离配置
//     // @Bean
//     // public LettuceConnectionFactory redisConnectionFactory() {
//     //     RedisStaticMasterReplicaConfiguration config = new RedisStaticMasterReplicaConfiguration("主节点IP", 6379);
//     //     config.addNode("从节点1IP", 6379);
//     //     config.addNode("从节点2IP", 6379);
//     //
//     //     if (password != null && !password.isEmpty()) {
//     //         config.setPassword(password);
//     //     }
//     //
//     //     LettuceClientConfiguration clientConfig = LettuceClientConfiguration.builder()
//     //             .readFrom(ReadFrom.REPLICA_PREFERRED)  // 优先从从节点读取
//     //             .build();
//     //
//     //     return new LettuceConnectionFactory(config, clientConfig);
//     // }
//
// }
